package cn.dengta.webapp.risk.bean;

import javax.annotation.Nonnull;

import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public abstract class AbstractRiskData {

	/**
	 * 用户账号标识， 建议使用贵司用户 UID（可加密）自行生成 , 标识用户唯一身份用作灌水和广告等行为维度风控。
	 * 如无用户uid的场景建议使用唯一的数据标识传值
	 */
	protected String tokenId;
	/** 用户IP地址 */
	protected String ip;
	/** 用户设备标识 */
	protected String deviceId;

	protected JSONObject extra;

	public void init(@Nonnull String tokenId, @Nonnull String body, String ip, String deviceId) {
		this.tokenId = tokenId;
		setBody(body);
		this.ip = ip;
		this.deviceId = deviceId;
	}

	protected abstract void setBody(String body);

	@Nonnull
	public JSONObject extra() {
		if (extra == null) {
			extra = new JSONObject(2);
		}
		return extra;
	}

}
